import axios from 'axios'
import { ElMessage } from 'element-plus'

// 创建 axios 实例
const API_BASE_URL = (import.meta as any)?.env?.VITE_API_BASE_URL || ''
const request = axios.create({
  baseURL: API_BASE_URL,
  timeout: 30000, // 30秒超时，考虑到视频上传可能需要较长时间
  withCredentials: true, // 携带 cookies
})

// 请求拦截器
request.interceptors.request.use(
  (config) => {
    return config
  },
  (error) => {
    return Promise.reject(error)
  }
)

// 响应拦截器
request.interceptors.response.use(
  (response) => {
    return response
  },
  (error) => {
    if (error.response) {
      const { status, data } = error.response

      switch (status) {
        case 401:
          ElMessage.error('인증되지 않음, 다시 로그인하세요')
          // 여기서 로그인 페이지로 이동 처리 가능
          break
        case 403:
          ElMessage.error('권한 부족')
          break
        case 404:
          ElMessage.error('요청한 리소스가 존재하지 않습니다')
          break
        case 500:
          ElMessage.error('서버 내부 오류')
          break
        default:
          ElMessage.error(data?.error || '요청 실패')
      }
    } else if (error.request) {
      ElMessage.error('네트워크 오류, 네트워크 연결을 확인하세요')
    } else {
      ElMessage.error('요청 설정 오류')
    }

    return Promise.reject(error)
  }
)

export default request
